package com.ljx.recruitment.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ljx.recruitment.common.domain.vo.resp.PageResp;
import com.ljx.recruitment.user.domain.dto.UserDto;
import com.ljx.recruitment.user.domain.dto.UserFlagDto;
import com.ljx.recruitment.user.domain.entity.User;
import com.ljx.recruitment.user.domain.vo.req.*;
import com.ljx.recruitment.user.domain.vo.resp.LoginResp;
import com.ljx.recruitment.user.domain.vo.resp.UserResp;
import com.ljx.recruitment.user.domain.vo.resp.UserRoleResp;
import com.ljx.recruitment.user.typehandler.details.ResumeDetails;

import javax.servlet.http.HttpServletRequest;
import java.util.List;


public interface UserService extends IService<User> {
    LoginResp login(AuthReq authReq);

    UserResp getInfo(Long userId);

    User getByUsernameAndTenant(String username, Long tenantId);

    UserResp submitByUsername(UserSubmitReq req);

    UserResp register(AuthReq authReq);

    void checkPerAndRoleAndMenu(UserDto userDto);

    PageResp<User> getPage(UserPageReq req, UserFlagDto userFlagDto);

    List<UserRoleResp> getUserRole(Long userId);

    ResumeDetails submitUserResume(UserResumeReq req);

    void logout(HttpServletRequest request);

    UserResp submit(UserSubmitReq req);

    User getByRecommendCode(String recommendCode);

    UserResp adminSaveUser(UserSubmitReq req);

    Integer getTenantUserCount(Long tenantId);
}
